package com.wkbb.basic.mapper;

import com.wkbb.basic.model.Employee;
import com.wkbb.basic.model.Organization;
import com.wkbb.basic.vo.EmployeeEditInfoVo;
import com.wkbb.basic.vo.TeacherManageVo;
import com.wkbb.common.base.BaseMapper;
import com.wkbb.common.dto.basic.EmployeeInfoDto;
import com.wkbb.common.dto.basic.NickNameDto;
import com.wkbb.common.dto.im.FacultyAddressBookDto;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface EmployeeMapper extends BaseMapper<Employee> {

    EmployeeInfoDto getEmployeeInfoByMapParams(Map<String, Object> params);

    EmployeeEditInfoVo getEmployeeInfoById(Long id);

    List<EmployeeInfoDto> getEmployeeInfoPageList(Map<String, Object> params);

    List<EmployeeInfoDto> getSchoolMasterInfo(Map<String, Object> params);

    List<EmployeeInfoDto> getEmployeeInfoList(Map<String, Object> params);

    List<Employee> getAllUserListByMapParams(Map<String, Object> params);

    List<EmployeeInfoDto> getEmployeeInfoListByClassId(Map<String, Object> params);

    List<TeacherManageVo> getTeacherManagerPageList(Map<String, Object> params);

    List<TeacherManageVo> getTeacherManagerList(Map<String, Object> params);

    List<EmployeeInfoDto> getEmployeeInfoClass(Map<String, Object> params);

    NickNameDto getNickName(NickNameDto nickNameDto);

    List<FacultyAddressBookDto> getFacultyAddressBook(Map<String, Object> params);

    List<FacultyAddressBookDto> getPrincipalByMap(Map<String, Object> params);

    void updateBack(Employee employee);

    List<EmployeeInfoDto> getAllEmployeeList(Long orgId);

    //TODO 后面要把职员删除改成这个（未测）
    void deleteEmploy(Map<String, Object> params);

    Integer getCountByOrgId(Long orgId);

    List<Map<String, Object>> getTeacherCountStatByOrgId(Long orgId);

    List<Map<String, Object>> getTearcherCountStatByOrgList(@Param("list")List<Organization> organizationList);

    List<Employee> getEmployeeMaster(Map<String, Object> params);

    Integer getEmployeeCount(Map<String, Object> params);

    List<Long> getEmployeeListAll();

    List<Employee> getMasterByUserIds(Map<String, Object> params);

    List<Long> getMasterAndTeacherCourse(Map<String, Long> params);
	
	List<Employee> getFamilyListByUpdateTime(HashMap<String, Object> params);

    void updateSmart(Employee employee);

    EmployeeInfoDto getEmloyeeByPwd(@Param("account")String account, @Param("password")String password);

    Map<String, Object> getTeacherCount(Map<String, Object> params);
}